// 引入 axios 开始
import axios from 'axios'
// 引入 axios  结束
import router from '../router'

import { Message } from 'element-ui'

const http = axios.create({
    timeout: 1000 * 60,
    withCredentials: true,
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'
    }
})
// 在request拦截器实现
http.interceptors.request.use(
    config => {
        config.baseURL = '/pangu'
        return config
    },
    error => {
        return Promise.reject(error)
    }
)
//在 response 拦截器实现
http.interceptors.response.use(response => {
    let data = response.data;
    // 正确返回值示例
    /*{"content": "xxx","responseType": "SUCCESS"} */
    if(data.responseType == "SUCCESS"){
        return data.content;
    }
    // 错误返回值示
    /*{ "content": "xxx", "responseType": "ERROR", "errorType": "" } */
    if(data.responseType == "ERROR"){
        Message.error(data.content);
        // TODO 根据错误类型进行不同操作，例如未登录跳转到登陆界面
        //router.push({ name: 'login' })
        return Promise.reject(new Error(data.message || 'Error'))
    }
    Message.error("不受支持的返回值格式:"+JSON.stringify(data));
    return Promise.reject(new Error(data.message || 'Error'))
}, error => {
    if (error.response.status) {
        switch (error.response.status) {
            // 404请求不存在
            case 404:
                Message.error('请求404')
                setTimeout(() => { // 返回请先登录的状态码 回跳登录
                    router.options.isAddDynamicMenuRoutes = false
                    // router.push({ name: '404' })
                }, 600)
                break
            // 其他错误，直接抛出错误提示
            default:
                Message.error('服务器发生意外错误，错误code：' + error.response.status)
        }
    }
    return Promise.reject(error)
})

export default http;
// http.interceptors.request.use(
//     config => {
//         config.baseURL = '/api'
//         config.withCredentials = true // 允许携带token ,这个是解决跨域产生的相关问题
//         config.timeout = 6000
//         let token = sessionStorage.getItem('access_token')
//         if (token) {
//             config.headers = {
//                 'access-token': token,
//                 'Content-Type': 'application/json; charset=utf-8'
//             }
//         }
//         if (config.url === 'refresh') {
//             config.headers = {
//                 'refresh-token': sessionStorage.getItem('refresh_token'),
//                 'Content-Type': 'application/json; charset=utf-8'
//             }
//         }
//         console.log(config)
//         return config
//     },
//     error => {
//         return Promise.reject(error)
//     }
// )

